<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <style>
    .login-box {
      position: fixed;
      display: none;
      left: 50%;
      top: 50%;
      z-index: 10000;
      -webkit-transform: translate(-50%, -50%);
      -ms-transform: translate(-50%, -50%);
      -o-transform: translate(-50%, -50%);
      -moz-transform: translate(-50%, -50%);
      transform: translate(-50%, -50%);
      background-color: #fff;
    }

    .login-mark {
      position: fixed;
      top: 0;
      left: 0;
      z-index: 9999;
      background-color: rgba(0, 0, 0, 0.5);
      width: 100%;
      height: 100%;
      display: none;
    }
  </style>

  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport"
    content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
  <link href="https://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON">
  <title>关系型数据库和非关系型数据库的区别</title>
  <link rel="stylesheet" type="text/css" href="./detail_enter-62dd2e49f2.min.css">
  <style>
    .MathJax,
    .MathJax_Message,
    .MathJax_Preview {
      display: none
    }
  </style>
  </style>
  <style type="text/css">
    #MathJax_About {
      position: fixed;
      left: 50%;
      width: auto;
      text-align: center;
      border: 3px outset;
      padding: 1em 2em;
      background-color: #DDDDDD;
      color: black;
      cursor: default;
      font-family: message-box;
      font-size: 120%;
      font-style: normal;
      text-indent: 0;
      text-transform: none;
      line-height: normal;
      letter-spacing: normal;
      word-spacing: normal;
      word-wrap: normal;
      white-space: nowrap;
      float: none;
      z-index: 201;
      border-radius: 15px;
      -webkit-border-radius: 15px;
      -moz-border-radius: 15px;
      -khtml-border-radius: 15px;
      box-shadow: 0px 10px 20px #808080;
      -webkit-box-shadow: 0px 10px 20px #808080;
      -moz-box-shadow: 0px 10px 20px #808080;
      -khtml-box-shadow: 0px 10px 20px #808080;
      filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')
    }

    #MathJax_About.MathJax_MousePost {
      outline: none
    }

    .MathJax_Menu {
      position: absolute;
      background-color: white;
      color: black;
      width: auto;
      padding: 2px;
      border: 1px solid #CCCCCC;
      margin: 0;
      cursor: default;
      font: menu;
      text-align: left;
      text-indent: 0;
      text-transform: none;
      line-height: normal;
      letter-spacing: normal;
      word-spacing: normal;
      word-wrap: normal;
      white-space: nowrap;
      float: none;
      z-index: 201;
      box-shadow: 0px 10px 20px #808080;
      -webkit-box-shadow: 0px 10px 20px #808080;
      -moz-box-shadow: 0px 10px 20px #808080;
      -khtml-box-shadow: 0px 10px 20px #808080;
      filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')
    }

    .MathJax_MenuItem {
      padding: 2px 2em;
      background: transparent
    }

    .MathJax_MenuArrow {
      position: absolute;
      right: .5em;
      padding-top: .25em;
      color: #666666;
      font-size: .75em
    }

    .MathJax_MenuActive .MathJax_MenuArrow {
      color: white
    }

    .MathJax_MenuArrow.RTL {
      left: .5em;
      right: auto
    }

    .MathJax_MenuCheck {
      position: absolute;
      left: .7em
    }

    .MathJax_MenuCheck.RTL {
      right: .7em;
      left: auto
    }

    .MathJax_MenuRadioCheck {
      position: absolute;
      left: 1em
    }

    .MathJax_MenuRadioCheck.RTL {
      right: 1em;
      left: auto
    }

    .MathJax_MenuLabel {
      padding: 2px 2em 4px 1.33em;
      font-style: italic
    }

    .MathJax_MenuRule {
      border-top: 1px solid #CCCCCC;
      margin: 4px 1px 0px
    }

    .MathJax_MenuDisabled {
      color: GrayText
    }

    .MathJax_MenuActive {
      background-color: Highlight;
      color: HighlightText
    }

    .MathJax_MenuDisabled:focus,
    .MathJax_MenuLabel:focus {
      background-color: #E8E8E8
    }

    .MathJax_ContextMenu:focus {
      outline: none
    }

    .MathJax_ContextMenu .MathJax_MenuItem:focus {
      outline: none
    }

    #MathJax_AboutClose {
      top: .2em;
      right: .2em
    }

    .MathJax_Menu .MathJax_MenuClose {
      top: -10px;
      left: -10px
    }

    .MathJax_MenuClose {
      position: absolute;
      cursor: pointer;
      display: inline-block;
      border: 2px solid #AAA;
      border-radius: 18px;
      -webkit-border-radius: 18px;
      -moz-border-radius: 18px;
      -khtml-border-radius: 18px;
      font-family: 'Courier New', Courier;
      font-size: 24px;
      color: #F0F0F0
    }

    .MathJax_MenuClose span {
      display: block;
      background-color: #AAA;
      border: 1.5px solid;
      border-radius: 18px;
      -webkit-border-radius: 18px;
      -moz-border-radius: 18px;
      -khtml-border-radius: 18px;
      line-height: 0;
      padding: 8px 0 6px
    }

    .MathJax_MenuClose:hover {
      color: white !important;
      border: 2px solid #CCC !important
    }

    .MathJax_MenuClose:hover span {
      background-color: #CCC !important
    }

    .MathJax_MenuClose:hover:focus {
      outline: none
    }
  </style>
  <style type="text/css">
    .MathJax_Preview .MJXf-math {
      color: inherit !important
    }
  </style>
  <style type="text/css">
    .MJX_Assistive_MathML {
      position: absolute !important;
      top: 0;
      left: 0;
      clip: rect(1px, 1px, 1px, 1px);
      padding: 1px 0 0 0 !important;
      border: 0 !important;
      height: 1px !important;
      width: 1px !important;
      overflow: hidden !important;
      display: block !important;
      -webkit-touch-callout: none;
      -webkit-user-select: none;
      -khtml-user-select: none;
      -moz-user-select: none;
      -ms-user-select: none;
      user-select: none
    }

    .MJX_Assistive_MathML.MJX_Assistive_MathML_Block {
      width: 100% !important
    }
  </style>
  <style type="text/css">
    #MathJax_Zoom {
      position: absolute;
      background-color: #F0F0F0;
      overflow: auto;
      display: block;
      z-index: 301;
      padding: .5em;
      border: 1px solid black;
      margin: 0;
      font-weight: normal;
      font-style: normal;
      text-align: left;
      text-indent: 0;
      text-transform: none;
      line-height: normal;
      letter-spacing: normal;
      word-spacing: normal;
      word-wrap: normal;
      white-space: nowrap;
      float: none;
      -webkit-box-sizing: content-box;
      -moz-box-sizing: content-box;
      box-sizing: content-box;
      box-shadow: 5px 5px 15px #AAAAAA;
      -webkit-box-shadow: 5px 5px 15px #AAAAAA;
      -moz-box-shadow: 5px 5px 15px #AAAAAA;
      -khtml-box-shadow: 5px 5px 15px #AAAAAA;
      filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')
    }

    #MathJax_ZoomOverlay {
      position: absolute;
      left: 0;
      top: 0;
      z-index: 300;
      display: inline-block;
      width: 100%;
      height: 100%;
      border: 0;
      padding: 0;
      margin: 0;
      background-color: white;
      opacity: 0;
      filter: alpha(opacity=0)
    }

    #MathJax_ZoomFrame {
      position: relative;
      display: inline-block;
      height: 0;
      width: 0
    }

    #MathJax_ZoomEventTrap {
      position: absolute;
      left: 0;
      top: 0;
      z-index: 302;
      display: inline-block;
      border: 0;
      padding: 0;
      margin: 0;
      background-color: white;
      opacity: 0;
      filter: alpha(opacity=0)
    }
  </style>
  <style type="text/css">
    .MathJax_Preview {
      color: #888
    }

    #MathJax_Message {
      position: fixed;
      left: 1em;
      bottom: 1.5em;
      background-color: #E6E6E6;
      border: 1px solid #959595;
      margin: 0px;
      padding: 2px 8px;
      z-index: 102;
      color: black;
      font-size: 80%;
      width: auto;
      white-space: nowrap
    }

    #MathJax_MSIE_Frame {
      position: absolute;
      top: 0;
      left: 0;
      width: 0px;
      z-index: 101;
      border: 0px;
      margin: 0px;
      padding: 0px
    }

    .MathJax_Error {
      color: #CC0000;
      font-style: italic
    }
  </style>
  <style type="text/css">
    .MJXp-script {
      font-size: .8em
    }

    .MJXp-right {
      -webkit-transform-origin: right;
      -moz-transform-origin: right;
      -ms-transform-origin: right;
      -o-transform-origin: right;
      transform-origin: right
    }

    .MJXp-bold {
      font-weight: bold
    }

    .MJXp-italic {
      font-style: italic
    }

    .MJXp-scr {
      font-family: MathJax_Script, 'Times New Roman', Times, STIXGeneral, serif
    }

    .MJXp-frak {
      font-family: MathJax_Fraktur, 'Times New Roman', Times, STIXGeneral, serif
    }

    .MJXp-sf {
      font-family: MathJax_SansSerif, 'Times New Roman', Times, STIXGeneral, serif
    }

    .MJXp-cal {
      font-family: MathJax_Caligraphic, 'Times New Roman', Times, STIXGeneral, serif
    }

    .MJXp-mono {
      font-family: MathJax_Typewriter, 'Times New Roman', Times, STIXGeneral, serif
    }

    .MJXp-largeop {
      font-size: 150%
    }

    .MJXp-largeop.MJXp-int {
      vertical-align: -.2em
    }

    .MJXp-math {
      display: inline-block;
      line-height: 1.2;
      text-indent: 0;
      font-family: 'Times New Roman', Times, STIXGeneral, serif;
      white-space: nowrap;
      border-collapse: collapse
    }

    .MJXp-display {
      display: block;
      text-align: center;
      margin: 1em 0
    }

    .MJXp-math span {
      display: inline-block
    }

    .MJXp-box {
      display: block !important;
      text-align: center
    }

    .MJXp-box:after {
      content: " "
    }

    .MJXp-rule {
      display: block !important;
      margin-top: .1em
    }

    .MJXp-char {
      display: block !important
    }

    .MJXp-mo {
      margin: 0 .15em
    }

    .MJXp-mfrac {
      margin: 0 .125em;
      vertical-align: .25em
    }

    .MJXp-denom {
      display: inline-table !important;
      width: 100%
    }

    .MJXp-denom>* {
      display: table-row !important
    }

    .MJXp-surd {
      vertical-align: top
    }

    .MJXp-surd>* {
      display: block !important
    }

    .MJXp-script-box>* {
      display: table !important;
      height: 50%
    }

    .MJXp-script-box>*>* {
      display: table-cell !important;
      vertical-align: top
    }

    .MJXp-script-box>*:last-child>* {
      vertical-align: bottom
    }

    .MJXp-script-box>*>*>* {
      display: block !important
    }

    .MJXp-mphantom {
      visibility: hidden
    }

    .MJXp-munderover {
      display: inline-table !important
    }

    .MJXp-over {
      display: inline-block !important;
      text-align: center
    }

    .MJXp-over>* {
      display: block !important
    }

    .MJXp-munderover>* {
      display: table-row !important
    }

    .MJXp-mtable {
      vertical-align: .25em;
      margin: 0 .125em
    }

    .MJXp-mtable>* {
      display: inline-table !important;
      vertical-align: middle
    }

    .MJXp-mtr {
      display: table-row !important
    }

    .MJXp-mtd {
      display: table-cell !important;
      text-align: center;
      padding: .5em 0 0 .5em
    }

    .MJXp-mtr>.MJXp-mtd:first-child {
      padding-left: 0
    }

    .MJXp-mtr:first-child>.MJXp-mtd {
      padding-top: 0
    }

    .MJXp-mlabeledtr {
      display: table-row !important
    }

    .MJXp-mlabeledtr>.MJXp-mtd:first-child {
      padding-left: 0
    }

    .MJXp-mlabeledtr:first-child>.MJXp-mtd {
      padding-top: 0
    }

    .MJXp-merror {
      background-color: #FFFF88;
      color: #CC0000;
      border: 1px solid #CC0000;
      padding: 1px 3px;
      font-style: normal;
      font-size: 90%
    }

    .MJXp-scale0 {
      -webkit-transform: scaleX(.0);
      -moz-transform: scaleX(.0);
      -ms-transform: scaleX(.0);
      -o-transform: scaleX(.0);
      transform: scaleX(.0)
    }

    .MJXp-scale1 {
      -webkit-transform: scaleX(.1);
      -moz-transform: scaleX(.1);
      -ms-transform: scaleX(.1);
      -o-transform: scaleX(.1);
      transform: scaleX(.1)
    }

    .MJXp-scale2 {
      -webkit-transform: scaleX(.2);
      -moz-transform: scaleX(.2);
      -ms-transform: scaleX(.2);
      -o-transform: scaleX(.2);
      transform: scaleX(.2)
    }

    .MJXp-scale3 {
      -webkit-transform: scaleX(.3);
      -moz-transform: scaleX(.3);
      -ms-transform: scaleX(.3);
      -o-transform: scaleX(.3);
      transform: scaleX(.3)
    }

    .MJXp-scale4 {
      -webkit-transform: scaleX(.4);
      -moz-transform: scaleX(.4);
      -ms-transform: scaleX(.4);
      -o-transform: scaleX(.4);
      transform: scaleX(.4)
    }

    .MJXp-scale5 {
      -webkit-transform: scaleX(.5);
      -moz-transform: scaleX(.5);
      -ms-transform: scaleX(.5);
      -o-transform: scaleX(.5);
      transform: scaleX(.5)
    }

    .MJXp-scale6 {
      -webkit-transform: scaleX(.6);
      -moz-transform: scaleX(.6);
      -ms-transform: scaleX(.6);
      -o-transform: scaleX(.6);
      transform: scaleX(.6)
    }

    .MJXp-scale7 {
      -webkit-transform: scaleX(.7);
      -moz-transform: scaleX(.7);
      -ms-transform: scaleX(.7);
      -o-transform: scaleX(.7);
      transform: scaleX(.7)
    }

    .MJXp-scale8 {
      -webkit-transform: scaleX(.8);
      -moz-transform: scaleX(.8);
      -ms-transform: scaleX(.8);
      -o-transform: scaleX(.8);
      transform: scaleX(.8)
    }

    .MJXp-scale9 {
      -webkit-transform: scaleX(.9);
      -moz-transform: scaleX(.9);
      -ms-transform: scaleX(.9);
      -o-transform: scaleX(.9);
      transform: scaleX(.9)
    }

    .MathJax_PHTML .noError {
      font-size: 90%;
      text-align: left;
      color: black;
      padding: 1px 3px;
      border: 1px solid
    }
  </style>
</head>

<body class="nodata">
  <div id="BAIDU_DUP_fp_wrapper"
    style="position: absolute; left: -1px; bottom: -1px; z-index: 0; width: 0px; height: 0px; overflow: hidden; visibility: hidden; display: none;">
  </div>
  <div id="MathJax_Message" style="display: none;"></div>
  <link rel="stylesheet" href="./blog_code-01256533b5.min.css">
  <div class="main_father clearfix d-flex justify-content-center" style="height:100%;">
    <div class="container clearfix" id="mainBox">
      <main>
        <div class="blog-content-box">
          <div class="article-header-box">
            <div class="article-header">
              <div class="article-title-box">
                <h1 class="title-article" id="articleContentId">关系型数据库和非关系型数据库的区别</h1>
              </div>

            </div>
          </div>
          <article class="baidu_pl">
            <div id="article_content" class="article_content clearfix">
              <div id="content_views" class="markdown_views prism-atom-one-light">
                <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
                  <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block"
                    style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
                </svg>

                <p><br> <strong>一 关系型数据库 有</strong><br> <img src="./20190630214629835.png" alt="在这里插入图片描述"><br>
                  <strong>我们只需要 记住常用的几个：mysql /oracle/sql server/sqlite
                    几个即可</strong><br> 我还有一篇文章 介绍了 关系型数据库和非关系型数据的数据结构 –<strong>红黑树-二叉树-B树</strong>
                </p>
                <p><strong>1.首先了解一下 什么是关系型数据库？</strong><br>
                   例如，人是一个实体，人与人之间有关系，这种实体和关系间的对应就可以表达为一个关系模型。现实世界中我们可以定义很多实体，一个人是一个实体，一辆车、一栋房子都可以表达成一个实体。实体是一系列属性的集合，人作为一个实体有姓名、年龄、性别等基本属性，人还可以有职业、爱好等附加属性，这些属性的集合构成人这个实体。与此同时，一个属性也可以单独成为一个实体。例如，性别就可以成为一个单独的实体，这个实体里的属性包括两种，男和女。人这个实体和性别这个实体之间存在一个关系，一个人只能有一种性别，所以人和性别这两个实体之间的关系是一对一的。职业也可以构成一个实体，职业的属性包括工程师、建筑师、画家等很多种，人作为实体与职业这个实体的关系是一对多的，也就是说一个人可以拥有多个职业，是建筑师的同时也可能是画家。<b>将这种现实世界中的实体和关系通过关系模型表达出来就可以形成一种数据存储关系，通过这种方式表达的数据库就叫作关系型数据库</b>。
                  <br><br> <strong>优点：</strong><br>
                  1、<strong>易于维护</strong>：都是使用表结构，<strong>格式一致</strong>；<br>
                  2、<strong>使用方便</strong>：<strong>SQL语言通用</strong>，可用于复杂查询；<br>
                  3、<strong>复杂操作</strong>：<strong>支持SQL</strong>，可用于一个表以及多个表之间非常复杂的查询。<br>
                  <strong>缺点：</strong><br> 1、<strong>读写性能比较差</strong>，尤其是海量数据的高效率读写；<br>
                  2、固定的表结构，<strong>灵活度稍欠</strong>；<br>
                  3、高并发读写需求，传统关系型数据库来说，<strong>硬盘I/O是一个很大的瓶颈</strong>。</p>
                <p><strong>二 非关系型数据库</strong><br> <img src="./20190630215444150.png" alt="在这里插入图片描述"><br> 我们只需要
                  记住常用的：redis / hbase /mongoDB /CouchDB /Neo4J 【注意：hive
                  不是数据库，是数据仓库 不是一个概念】</p>
                <p><strong>什么非关系型数据库呢？</strong></p>
                <p>非关系型数据库严格上不是一种数据库，应该<strong>是一种数据结构化存储方法的集合，可以是文档或者键值对等</strong></p>
                <p><strong>优点：</strong><br>
                  1、<strong>格式灵活</strong>：存储数据的格式<strong>可以是key,value形式、文档形式、图片形式等等</strong>，文档形式、图片形式等等，使用灵活，应用场景广泛，<strong>而关系型数据库则只支持基础类型</strong>。<br>
                  2、<strong>速度快</strong>：nosql可以使用硬盘或者随机存储器作为载体，而关系型数据库只能使用硬盘；<br> 3、高扩展性；<br>
                  4、<strong>成本低</strong>：nosql数据库<strong>部署简单</strong>，<strong>基本都是开源软件</strong>。</p>
                <p><strong>缺点：</strong><br> 1、不提供sql支持，<strong>学习和使用成本较高</strong>；<br>
                  2、<strong>无事务处理</strong>；<br> 3、<strong>数据结构相对复杂</strong>，复杂查询方面稍欠。</p>
                <p><strong>非关系型数据库的分类和比较：</strong></p>
                <p>1、文档型<br> 2、key-value型<br> 3、列式数据库
                  (数据即索引；高压缩比；一般使用LSM模型,数据先存在内存进行排序,数据量大了再溢写到磁盘；不适合做含有删除和更新的实时操作)<br> 4、图形数据库<br> <img
                    src="./2019063022023843.png" alt="在这里插入图片描述"><br> <img src="./20190630220310266.png"
                    alt="在这里插入图片描述"><br> <img src="./20190630220334224.png" alt="在这里插入图片描述" style="
    margin-bottom: 0;
    display: block;
">
                <p style="/* text-indent: 1em; */padding-left: 1em;">
                  数据即索引；高压缩比；<br>一般使用LSM模型，数据先存在内存进行排序，数据量大了再溢写到磁盘；<br>不适合做含有删除和更新的实时操作（删除和更新需要解压缩Block
                  然后计算然后重新压缩储存）</p><br> <img src="./20190630220353886.png" alt="在这里插入图片描述"></p>
              </div>
              <div>
                <div></div>
              </div>
              <link href="./style-6aa8c38f9a.css" rel="stylesheet">
            </div>
          </article>
        </div>
    </div>
